perm filename TIMER.FAI[D,SYS] blob
sn#266347 filedate 1977-03-03 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 TITLE FOO
C00007 ENDMK
C⊗;
TITLE FOO
A←1
B←2
C←3
D←4
E←5
T←6
TT←7
TTT←10
P←17
APR←←0
PI←←4
KLPAG←←10
CCA←←14
TIM←←20
MTR←←24
DTE0←←200
SWEEPB←←200000 ;KL10 APR CONI BIT - SWEEP BUSY
UPTEBX←←504
LOC 74
JRST DDT↑
LOC 201
JRST DDT↑
KLEPT←←1000
DONG11←←20000 ;DTE CONO BIT. REQUEST 11 INTERRUPT
DTFLG←←444 ;DTE20 OPERATION COMPLETE FLAG
DTF11←←450 ; FROM 11 ARGUMENT
DTCMD←←451 ; TO 11 COMMAND
INTVEC←←514
LOC 5000
KLUPT:
KLPFW←←500 ;PAGE FAIL WORD
KLPFPC←←501 ;PAGE FAIL PC
KLPFNP←←502 ;PAGE FAIL NEW PC WORD
LOC 6000
USPGT: 170040,,400
LOC 7000
EXPGT:
FOR I←0,777,1 <
170040,,I
>
LOC 10000
GO: CONO APR,200000
CONO PI,12300 ;TURN ON PI 1
CONSZ APR,SWEEPB ;WAIT FOR SWEEP BUSY TO FALL
JRST .-1
CONSO KLPAG,600000 ;IS THE CACHE ON ALREADY?
JRST DSKDM0 ;NO.
BLKO CCA, ;VALIDATE CORE
CONSZ APR,SWEEPB
JRST .-1
DSKDM0: CONO KLPAG,0 ;TURN OFF CACHE. EPT TO PAGE ZERO. TURN OFF MAP
DATAI CCA,0 ;SWEEP CACHE. INVALIDATE ALL.
CONSZ APR,SWEEPB ;WAIT FOR SWEEP BUSY TO FALL
JRST .-1
MOVE P,[-20,,PDL-1]
MOVE A,[JSR INTINT]
MOVEM A,KLEPT+INTVEC
CONO KLPAG,KLEPT⊗-9 ;PUT EPT AT KLEPT
SETZM KLUPT
MOVE A,[KLUPT,,KLUPT+1]
BLT A,KLUPT+777
MOVE A,[4000,,PFLT]
MOVEM A,KLUPT+KLPFNP
DATAI KLPAG,A
ANDCMI A,17777
IORI A,KLUPT⊗-9
DATAO KLPAG,A
BLKI KLPAG,[ EXPGT⊗-9 ;SET EXPGT AND USPGT POINTERS IN AC BLOCK 6
USPGT⊗-9 ]
CONO KLPAG,660000+KLEPT⊗-9 ;FLUSH OLD PAGE MAP CACHE ENTRIES
MOVE A,[JRST 100]
MOVEM A,400100
CONO MTR,410001 ;GIVE TIMER PIA OF 1, ENB ACCT IN USER MODE
DATAI KLPAG,A
TRZ A,400000
DATAO KLPAG,A
SETZM KLUPT+UPTEBX ;CLEAR EBOX COUNTER
SETZM COUNT
CONO TIM,460000+=1000 ;CLEAR AND START UP COUNTER, SET PERIOD TO =1000
JRST 2,@[10000,,100] ;GO TO USER MODE JRST .
INTINT: 0 ;INTERVAL TIMER INTERRUPT JSRS HERE
AOS A,COUNT
DATAI MTR,B ;GET EBOX COUNTER
DMOVEM B,ECOUNT
LSH C,1
LSHC B,3-=12
LSH C,-1 ;X 8
DIV B,[=1000000] ;/ 1000000 GIVES 10MS COUNT
IMULI B,=10000
IDIV B,COUNT ;GET % * =10000 IN B
MOVEM B,PERCNT
TRNE A,777
JRST INTIN1
MOVE T,PERCNT
IDIVI T,=100
PUSH P,TT
PUSHJ P,DECOUT
MOVEI C,"."
PUSHJ P,TYO
POP P,T ;GET REMAINDER BACK
MOVEI C,"0"
CAIGE T,=10
PUSHJ P,TYO
PUSHJ P,DECOUT
MOVEI B,[ASCIZ /%
/]
PUSHJ P,TYPE
INTIN1: CONO TIM,460000+=1000 ;RESTART COUNTER
JRST 12,@INTINT
DECOUT: IDIVI T,=10
JUMPE T,DECOU1
HRLM TT,(P)
PUSHJ P,DECOUT
HLRZ TT,(P)
DECOU1: MOVEI C,"0"(TT)
JRST TYO
TYPE: HRLI B,440700
TYPE1: ILDB C,B
JUMPE C,CPOPJ
PUSHJ P,TYO
JRST TYPE1
TYO: PUSH P,C
CAIN C,33
MOVEI C,"$"
ANDI C,177
PUSHJ P,DTEXX
POP P,C
POPJ P,
CPOPJ1: AOS (P)
CPOPJ: POPJ P,
DTEXX: MOVEM C,KLEPT+DTCMD
SETZM KLEPT+DTFLG ;CLEAR 11'S RESPONSE FLAG
CONO DTE0,DONG11 ;RING FOR 11
SKIPN KLEPT+DTFLG ;WAIT FOR RESPONSE
JRST .-1
MOVE C,KLEPT+DTF11 ;GET 11'S RESPONSE WORD
POPJ P,
COUNT: 0
ECOUNT: BLOCK 2
PERCNT: 0
PFLT: JRST 4,.
PDL: BLOCK 20
END GO